package com.mipo.client.javase.designerpattern.proxypattern.staticproxy.sample.daoproxy;
/**
 	测试类
	静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.
	下面举个案例来解释:
	模拟保存动作,定义一个保存动作的接口:UserDao.java,然后目标对象实现这个接口的方法UserDaoImpl.java,此时如果使用静态代理方式,就需要在代理对象(UserDaoProxy.java)中也实现UserDao接口.调用的时候通过调用代理对象的方法来调用目标对象.
	需要注意的是,代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法
	接口:UserDao.java
	目标对象:UserDaoImpl.java
	代理对象:UserDaoProxy.java
	静态代理总结:
	1.优点:可以做到在不修改目标对象的功能前提下,对目标功能扩展.
	2.缺点:
	因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.
	如何解决静态代理中的缺点呢?答案是可以使用动态代理方式
 */
public class AaMain{
	
	public static void main(String[] args) {
        //目标对象
        UserDao target = new UserDaoImpl();
        //代理对象,把目标对象传给代理对象,建立代理关系
        UserDaoProxy proxy = new UserDaoProxy(target);
        proxy.save();//执行的是代理的方法
    }
	
}